The present invention relates generally to data storage systems, and systems and methods to improve storage efficiency, compactness, performance, reliability, and compatibility. In general, data storage systems receive and store all or portions of arbitrary sets or streams of data. Data storage systems also retrieve all or portions of arbitrary sets or streams of data. A data storage system provides data storage and retrieval to one or more storage clients, such as user and server computers. Stored data may be referenced by unique identifiers and/or addresses or indices. In some implementations, the data storage system uses a file system to organize data streams into files. Files may be identified and accessed by a file system path, which may include a file name and one or more hierarchical file system directories. In other embodiments, data streams may be arbitrary sets of data that are not associated with any type of file system or other hierarchy.
Many data storage systems are tasked with handling enormous amounts of data. Additionally, data storage systems often provide data access to large numbers of simultaneous users and software applications. Users and software applications may access the file system via local communications connections, such as a high-speed data bus within a single computer; local area network connections, such as an Ethernet networking or storage area network (SAN) connection; and wide area network connections, such as the Internet, cellular data networks, and other low-bandwidth, high-latency data communications networks.
Cloud storage services are one type of data storage available via a wide-area network. Cloud storage services provide storage to users in the form of a virtualized storage device available via a wide-area network, such as the Internet or a private WAN. In general, users access cloud storage services to store and retrieve data using web services protocols, such as REST, SOAP, or XML-RPC. Cloud storage service providers manage the operation and maintenance of the physical data storage devices; therefore, users of cloud storage services can avoid the initial and ongoing costs associated with buying and maintaining storage devices. Users of cloud storage services also avoid the administrative complexity arising from configuring, managing, and maintaining their own data storage systems. Cloud storage services typically charge users for consumption of storage resources, such as storage space and/or transfer bandwidth, on a marginal or subscription basis, with little or no upfront costs. In addition to the cost and administrative advantages, cloud storage services often provide dynamically scalable capacity to meet its users changing needs. However, previous cloud storage services provide limited storage options for users.